/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Competente;

import adsreis.com.Beans.MateriaisBean;
import adsreis.com.Beans.ProdutosBean;
import adsreis.com.Beans.ProdutosdetBean;
import adsreis.com.Controls.MateriaisControl;
import adsreis.com.Controls.ProdutosControl;
import adsreis.com.Controls.ProdutosdetControl;
import adsreis.com.Outros.ConvertDouble;
import java.awt.Toolkit;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Pauroenriki
 */
public class Produtos extends javax.swing.JFrame {
    DefaultTableModel tmProdutos = new DefaultTableModel(null, new String[]{"Codigo","Descrição", "Altura", "Comprimento", "Custo",  "Mão de Obra","Venda", "Valor por Metrô"});
    DefaultTableModel tmMateriais = new DefaultTableModel(null, new String[]{"Codigo","Descrição","Valor Custo", "Qtd", "Mont"});
    DefaultTableModel tmDmateriais = new DefaultTableModel(null, new String[]{"Codigo","Descrição"});
    ListSelectionModel lsmDmateriais;
    ListSelectionModel lsmProdutos;
    ListSelectionModel lsmMateriais;
    List<ProdutosBean> produtos;
    List<ProdutosdetBean> produtosdet =  new ArrayList<>();
    List<ProdutosdetBean> prodDET;
    List<MateriaisBean>dmateriais;
    List<MateriaisBean>materiais;
    List<MateriaisBean> mater =  new ArrayList<>();
    String tipoCadastro;
    String codprod;
    String fo;
    String User;
    Integer Acesso;
    String busca;
    Integer codmat;
    Double vlrcusto = 0.00;
    Double mo;
    Double vlrvenda = 0.00;
    Double vlrmetro = 0.00;
    Float basecalculo;
    Float altura;
    Float comprimento;
    Float baseqtd;
    String tipoalter;
    /**
     * Creates new form Produtos
     */
    public Produtos() throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
        initComponents();
        setIcon();
        tfPesquisaProduto.requestFocus();
        Login ff = new Login();
        
        User = ff.acessivel;
        Acesso = ff.nAcesso;
        this.setTitle("CADASTRAR E CONSULTAR PRODUTOS - Usuário : " + User.toUpperCase());
        Nacesso();
       lblInfo.setToolTipText("Insira o peso total gasto no produto.");
        populartabela();
        DMateriais.setLocationRelativeTo(null); 
        DMateriais.setVisible(false);
        
        
}

    
    private void Nacesso(){
        
        switch (Acesso){
            case 0:
                btExcluir.setVisible(false);
                btAlterar.setVisible(false);
            case 1:
                btExcluir.setVisible(false);
                btAlterar.setVisible(false);
            case 2:
                
        }
        
        
    }
    
    private void setIcon() {
        //etIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("a.png")));﻿
        setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/Icons/icon.png")));
    }


    private void populartabela(){
        ProdutosdetControl pdc = new ProdutosdetControl();
        MateriaisBean mb = new MateriaisBean();
        dmateriais = pdc.listarMateriais("%%");
        String [] campos = new String[] {null, null};
       
        
        
        for(int i = 0; i < dmateriais.size(); i++ ){
            tmDmateriais.addRow(campos);
            tmDmateriais.setValueAt(dmateriais.get(i).getCodMaterial(), i, 0);
            tmDmateriais.setValueAt(dmateriais.get(i).getDescricao(), i, 1);
        }
    }
    
    private void tbDmateriaisLinhaSelecionada(JTable tb){
        
        
        if (tbDmateriais.getSelectedRow() != -1){
           
            tfMaterial.setText(dmateriais.get(tbDmateriais.getSelectedRow()).getDescricao());
        }
        else{
            JOptionPane.showMessageDialog(this, "Selecionado um Material!");
        }
   DMateriais.setVisible(false);
    }
    
    
    protected void cancelarCadastro(){
        while (tmProdutos.getRowCount()>0){
            tmProdutos.removeRow(0);            
        }
         while (produtosdet.size()>0){
            produtosdet.remove(0); 
        }
         
        
        while (tmMateriais.getRowCount()>0){
            tmMateriais.removeRow(0);            
        }
        desabilitarCampos();
        btSalvar.setEnabled(false);
        btAlterar.setEnabled(false);
        btExcluir.setEnabled(false);
        btInserir.setEnabled(false);
    }
    
     private void novoProduto(){
        
        ProdutosControl fc = new ProdutosControl();
        //tfCodigo.setText(String.valueOf(codfunc));
        
        tfCodigo.requestFocus();
        habilitarCampos();
        btInserir.setEnabled(true);
        ftfAltura.setEnabled(true);
        ftfComprimento.setEnabled(true);
        tfCodigo.setText("");
        //tfMarca.setText("");
        tfDescricao.setText("");
        ftfVlrCusto.setText("0.00");
        ftfVlrVenda.setText("0.00");
        ftfMO.setText("");
        tfQTD.setText("");
    }
    
    private void habilitarCampos(){
        
        tfDescricao.setEnabled(true);
        //ftfVlrCusto.setEnabled(true);
        tfCodigo.setEnabled(true);
        ftfVlrVenda.setEnabled(true);
        tfQTD.setEnabled(true);
        tfMaterial.setEnabled(true);
        ftfMO.setEnabled(true);
        ftfAltura.setEnabled(true);
        ftfComprimento.setEnabled(true);
        
       // tfDescricao.setEditable(true);
       // ftfVlrCusto.setEditable(true);
       // ftfVlrVenda.setEditable(true);
       // tfQtdEstoque.setEditable(true);
        
        tbProdutos.setEnabled(true);        
    }
    
    private void desabilitarbotoes(){
        btSalvar.setEnabled(false);
        btInserir.setEnabled(false);
        btAlterar.setEnabled(false);
        btExcluir.setEnabled(false);
        
    }
    
    private void desabilitarCampos(){
        
        tfDescricao.setEnabled(false);
        //ftfVlrCusto.setEnabled(false);
        ftfVlrVenda.setEnabled(false);
        tfQTD.setEnabled(false);
        tfCodigo.setEnabled(false);
        tfMaterial.setEnabled(false);
        ftfMO.setEnabled(false);
        
        
       // tfDescricao.setEditable(false);
       // ftfVlrCusto.setEditable(false);
        //ftfVlrVenda.setEditable(false);
        //tfQtdEstoque.setEditable(false);
        
         
        
        tfCodigo.setText("Novo");
        tfDescricao.setText("");
        ftfVlrCusto.setText("");
        ftfVlrVenda.setText("");
        tfQTD.setText("");
    }
  
    
    
    
    
    
    private boolean verificarCampos(){
        if(!tfDescricao.getText().trim().equals("")&& !tfCodigo.getText().trim().equals("")){
            boolean duplicidade;
            codprod = tfCodigo.getText();
            String dupla = null;
            ProdutosBean pb = new ProdutosBean();
            
            ProdutosControl pc = new ProdutosControl();
            duplicidade = pc.verificarDuplicidadeCodigo(codprod);
            
            if (duplicidade == true){                 
            return true;
            }else{
                JOptionPane.showMessageDialog(this, "Codigo de Barras já existe.");
                return false;
            }
        }
        JOptionPane.showMessageDialog(this, "Você deve preencher todos os campos.");
              
        return true;
    }
    
    private void listarProdutos(){
        ProdutosControl prod = new ProdutosControl();
        produtos = prod.listarProdutos("%" + tfPesquisaProduto.getText().trim() + "%");
        
        mostrarProdutos(produtos);
    }
    
    private void mostrarProdutos(List<ProdutosBean> produtos){
        while(tmProdutos.getRowCount()>0){
            tmProdutos.removeRow(0);
        }
        if(produtos.size() == 0){
            JOptionPane.showMessageDialog(this,"Nenhum produto encontrado");            
        }else{
            //fo = String.valueOf(fornecedores.get(tbProdutos.getSelectedRow()).getNome());
            String[]campos = new String[]{null, null, null,null,null,null,null};
            
            ProdutosBean pr;
            for(int i = 0; i< produtos.size(); i++){                
            tmProdutos.addRow(campos);
            tmProdutos.setValueAt(produtos.get(i).getCodProduto(), i, 0);
            tmProdutos.setValueAt(produtos.get(i).getDescricao(), i, 1);
            tmProdutos.setValueAt(produtos.get(i).getAltura(), i, 2);
            tmProdutos.setValueAt(produtos.get(i).getComprimento(), i, 3);
            tmProdutos.setValueAt(produtos.get(i).getVlrCusto(), i, 4);
            tmProdutos.setValueAt(produtos.get(i).getMo(), i, 5);
            tmProdutos.setValueAt(produtos.get(i).getVlrVenda(), i, 6);
            tmProdutos.setValueAt(produtos.get(i).getVlrMetro(), i, 7);
                
            
            }
                    
        }
        
    }
    
    private void cadastraProduto(){
       try{
           if(verificarCampos()){
            ProdutosBean produto = new ProdutosBean();
            produto.setCodProduto(tfCodigo.getText());
            produto.setDescricao(tfDescricao.getText());
            
            
            
            ConvertDouble cvd = new ConvertDouble();
        String vlrcusto1;
        vlrcusto1 =ftfVlrCusto.getText();
        vlrcusto = cvd.converterDoubleString3(vlrcusto1);
        
        
        
            produto.setVlrCusto(vlrcusto);
            
            
            String vlrvenda1;
        vlrvenda1 =ftfVlrVenda.getText();
        vlrvenda = cvd.converterDoubleString3(vlrvenda1);
        
            produto.setVlrVenda(vlrvenda);
            String altura1;
            altura1 = ftfAltura.getText();
            altura = cvd.converterFloat(altura1);
            produto.setAltura(altura);
            String comprimento1;
            comprimento1 = ftfComprimento.getText();
            comprimento = cvd.converterFloat(comprimento1);
            produto.setComprimento(comprimento);
            String mO;
            mO = ftfMO.getText().trim();
            mo = cvd.converterDoubleString3(mO);
            //produto.setMo(Double.parseDouble(ftfMO.getText().trim()));
            produto.setMo(mo);
            
            produto.setVlrMetro(vlrmetro);
            ProdutosControl p = new ProdutosControl();
            
            p.cadastrarProduto(produto);
            ProdutosdetControl pdc =new ProdutosdetControl();
            MateriaisBean mb = new MateriaisBean();
            
            for (int i = 0; i < produtosdet.size(); i++){
                produtosdet.get(i).getIDProduto(); 
                mb.setCodMaterial(produtosdet.get(i).getIDMaterial());
                mb.setQtdEstoque(produtosdet.get(i).getQtdMaterial());
                produtosdet.get(i).getBaseQtd();
                pdc.cadastrarItem(produtosdet.get(i));
                
                
            }
            
                    
            for (int t = 0; t < mater.size();t++){ //Removendo Itens do estoque
            mater.get(t);
            ProdutosdetControl pb = new ProdutosdetControl();
            pb.retirarQtdEstoque(mater.get(t));
                }
            
            
            
            JOptionPane.showMessageDialog(this,"Produto cadastrado com sucesso!"); 
            fechar();
        }
       }catch(NumberFormatException e){
            e.getMessage();
            JOptionPane.showMessageDialog(this,"Não use pontos ou vígulas nos valores"); 
        }
    }
    
    
    
    
    
    
    
    private void setarCampos(){
        
         while (produtosdet.size()>0){
            produtosdet.remove(0); 
        }
        
        while (tmMateriais.getRowCount()>0){
            tmMateriais.removeRow(0);            
        }
        
        
        try{
        ftfMO.setValue((produtos.get(tbProdutos.getSelectedRow()).getMo()));
        tfDescricao.setText(produtos.get(tbProdutos.getSelectedRow()).getDescricao());
        ftfVlrCusto.setValue(produtos.get(tbProdutos.getSelectedRow()).getVlrCusto());
        ftfVlrVenda.setValue(produtos.get(tbProdutos.getSelectedRow()).getVlrVenda());
        ftfAltura.setValue(produtos.get(tbProdutos.getSelectedRow()).getAltura());
        ftfComprimento.setValue(produtos.get(tbProdutos.getSelectedRow()).getComprimento());
        tfCodigo.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getCodProduto()));
        ProdutosdetControl pdc =new ProdutosdetControl();
        
        //for(int w =0; w<produtosdet.size(); w++){
            
        
            produtosdet = pdc.listarItens(produtos.get(tbProdutos.getSelectedRow()).getCodProduto());
        //}    
        
        //produtosdet = pdc.listarItens(produtos.get(tbProdutos.getSelectedRow()).getCodProduto());
         String [] campos = new String[] {null, null, null, null};
             
        for (int i = 0; i < produtosdet.size(); i++){ 
                tmMateriais.addRow(campos);
                tmMateriais.setValueAt(produtosdet.get(i).getIDMaterial(), i, 0);
                tmMateriais.setValueAt(produtosdet.get(i).getDescricao(), i, 1);
                tmMateriais.setValueAt(produtosdet.get(i).getVlrCusto(), i, 2);
                tmMateriais.setValueAt(produtosdet.get(i).getQtdMaterial(), i, 3);
                Double vlrcusto3;
                Float baseqtd3;
                vlrcusto3 = produtosdet.get(i).getVlrCusto();
                baseqtd3 = produtosdet.get(i).getQtdMaterial();
                tmMateriais.setValueAt(vlrcusto3*baseqtd3, i, 4);
                
                
             }
        }catch(Exception e){
            JOptionPane.showMessageDialog(this, "Favor entrar em contato com o Desenvolvedor.");
        }
        
    }
    
    
    
    
    
    
    public void tbProdutosLinhaSelecionada(JTable tb){
        while (produtosdet.size()>0){
            produtosdet.remove(0); 
        }
        
        while (tmMateriais.getRowCount()>0){
            tmMateriais.removeRow(0);            
        }
        
        if (tbProdutos.getSelectedRow() != -1){
            btAlterar.setEnabled(true);
            btExcluir.setEnabled(true);
            lblCodigo.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getCodProduto()));
            
            lblAltura.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getAltura()));
            
            lblComprimento.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getComprimento()));
           
            
            ConvertDouble cvd = new ConvertDouble();
            String mo2;
            mo2 = cvd.converterDoubleString(produtos.get(tbProdutos.getSelectedRow()).getMo());
            lblMo.setText(mo2);
            
            
            lblDescricao.setText(produtos.get(tbProdutos.getSelectedRow()).getDescricao());
            
            
            String vlrcusto2;
            vlrcusto2 = cvd.converterDoubleString(produtos.get(tbProdutos.getSelectedRow()).getVlrCusto());
            lblVlrCusto.setText(vlrcusto2);
            //String cust;
            //cust = String.valueOf(cvd.converterDoubleString1(vlrcusto2));
            
            //ftfVlrCusto.setText(cust);
            
            String vlrvenda2;
            vlrvenda2 = cvd.converterDoubleString(produtos.get(tbProdutos.getSelectedRow()).getVlrVenda());
            lblVlrVenda.setText(vlrvenda2);
            
            
            //String vlrmetro2;
            //vlrmetro2 = cvd.converterDoubleString(produtos.get(tbProdutos.getSelectedRow()).getVlrMetro());
            
            altura = produtos.get(tbProdutos.getSelectedRow()).getAltura();
            comprimento = produtos.get(tbProdutos.getSelectedRow()).getComprimento();            
            mo = produtos.get(tbProdutos.getSelectedRow()).getMo();
            vlrcusto = produtos.get(tbProdutos.getSelectedRow()).getVlrCusto();
            vlrmetro = produtos.get(tbProdutos.getSelectedRow()).getVlrMetro();
            
            
            
                 
           
             
            
            
            
            
            
        } else {
            tfCodigo.setText("(Novo)");
            tfDescricao.setText("");
            ftfVlrCusto.setText("");
            ftfVlrVenda.setText("");
            tfQTD.setText("");
        }
    }
    
    public void tbMateriaisLinhaSelecionada(JTable tb){
        if (tbMateriais.getSelectedRow() != -1){
            btAlterar.setEnabled(true);
            btExcluir.setEnabled(true);
            btRetirar.setEnabled(true);
            //tfCodigo.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getCodProduto()));
           
            //tfDescricao.setText(produtos.get(tbProdutos.getSelectedRow()).getDescricao());
            //ftfVlrCusto.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getVlrCusto()));
           // ftfVlrVenda.setText(String.valueOf(produtos.get(tbProdutos.getSelectedRow()).getVlrVenda()));
            
            
            /*} else {
             * tfCodigo.setText("(Novo)");
             * tfDescricao.setText("");
             * ftfVlrCusto.setText("");
             * ftfVlrVenda.setText("");
             * tfQTD.setText("");  */
        
        }
        
    }
    
    
    
    
    private void alterarProduto(){
       //if(verificarCampos()){
        MateriaisBean mb = new MateriaisBean();   
        ProdutosBean produto = new ProdutosBean();
        ProdutosdetControl pdc =new ProdutosdetControl();
        ProdutosdetBean pdb = new ProdutosdetBean();
            produto.setCodProduto(tfCodigo.getText());
            produto.setDescricao(tfDescricao.getText());
            /*
             * for(int i=0; i < produtosdet.size(); i++){
             * mb.setCodMaterial(produtosdet.get(i).getIDMaterial());
             * pdc.listarMateriaisCODIGO(mb.getCodMaterial());
             * materiais = pdc.materiais1;
             * //mb.setDescricao(materiais.get(i).getDescricao());
             * pdb.setDescricao(materiais.get(i).getDescricao());
             * produtosdet.add(pdb);
             * }*/
            
            
            
            
            
            ConvertDouble cvd = new ConvertDouble();
        String vlrcusto1;
        vlrcusto1 =ftfVlrCusto.getText();
        vlrcusto = cvd.converterDoubleString3(vlrcusto1);
        
        
        
            produto.setVlrCusto(vlrcusto);
            
            
            String vlrvenda1;
        vlrvenda1 =ftfVlrVenda.getText();
        vlrvenda = cvd.converterDoubleString3(vlrvenda1);
        
            produto.setVlrVenda(vlrvenda);
            String altura1;
            altura1 = ftfAltura.getText();
            altura = cvd.converterFloat(altura1);
            produto.setAltura(altura);
            produto.setComprimento(Float.parseFloat(String.valueOf(ftfComprimento.getValue())));
            produto.setMo(Double.parseDouble(String.valueOf(ftfMO.getValue())));
            produto.setVlrMetro(vlrmetro);
            ProdutosControl p = new ProdutosControl();
            
            
            
            
            
            for (int i = 0; i < produtosdet.size(); i++){
                produtosdet.get(i).getIDProduto(); 
                mb.setCodMaterial(produtosdet.get(i).getIDMaterial());
                mb.setQtdEstoque(produtosdet.get(i).getQtdMaterial());
                produtosdet.get(i).getBaseQtd();
                pdc.alterarItem(produtosdet.get(i));
                
                
            }
           
           p.alterarProduto(produto);
           desabilitarCampos();
           listarProdutos();
          
           
      // }else{
           //JOptionPane.showMessageDialog(this, "Informe o Descrição do Produto");
          // tfDescricao.requestFocus();
      // }
   }
    
    public void excluirProduto(){
        if (tbProdutos.getSelectedRow() != -1){
            int resposta = JOptionPane.showConfirmDialog(this, "Tem certeza que quer excluir o produto selecionado?", "Confirmação",
                    JOptionPane.YES_NO_OPTION);
            if (resposta == JOptionPane.YES_OPTION){
                ProdutosControl pc = new ProdutosControl();
                pc.excluirProduto(produtos.get(tbProdutos.getSelectedRow()).getCodProduto());
                //pc.excluirProdutodet(produtos.get(tbProdutos.getSelectedRow()).getCodProduto());
                listarProdutos();
                btAlterar.setEnabled(false);
                btExcluir.setEnabled(false);
            }
        }
    }
    
    
    
     private Integer buscamaterial(String mat){
        MateriaisBean mb = new MateriaisBean();
        ProdutosdetControl pdc = new ProdutosdetControl();
        pdc.listarMateriais(mat);
        
        
        materiais = ProdutosdetControl.materiais1;
        for (int i =0; i < materiais.size(); i++){
          mb.setCodMaterial(materiais.get(i).getCodMaterial());
          mb.setDescricao(materiais.get(i).getDescricao());
          mb.setVlrCusto(materiais.get(i).getVlrCusto());
       }
        
        
        codmat = mb.getCodMaterial();
        
        
        return codmat;
    }
     
     
     
     protected boolean verificarDuplicidade(){
        Integer verificaduplicidade;
        for(int i = 0; i<produtosdet.size(); i++){//produt
               
               verificaduplicidade = produtosdet.get(i).getIDMaterial();
               
        
               if(verificaduplicidade.equals(codmat)){ //verificaduplicidade == null ? codmat != null : 
                 JOptionPane.showMessageDialog(this, "Item em duplicidade!");
                   return false;
                 
               }
        }
            
               
        return true;
        
    }
     
     
     protected boolean verificarQuantidadeEstoque(){               //verifica se a quantidade pedida pelo usuário, tem saldo positivo no estoque
            Float qtdestoque;
         
         //try{
            MateriaisControl pc = new MateriaisControl();
            
            
            MateriaisBean p = pc.buscarQtd(codmat);         //Verificando o Banco de dados
            qtdestoque = p.getQtdEstoque();
            Float qtcom;
            qtcom = Float.parseFloat(String.valueOf(tfQTD.getValue()));
            
            
            
            
            if (qtdestoque >= qtcom && qtdestoque > 0){
                return true;
            }else{
       // }catch (NumberFormatException ex){
        //    ex.getMessage();
            JOptionPane.showMessageDialog(this, "O Material selecionado está em falta!" + "\n Veja a quantidade em estoque: " + qtdestoque);
        }
        return false;
    }
     
     
     
     
     protected boolean verificarQuantidade(){ //verifica se o usuario inseriu quantidade valida antes de inserir o produto na tabela
       Float qtd = Float.parseFloat(String.valueOf(tfQTD.getValue()));
        try{
            if (qtd > 0){
                return true;
            }
        }catch (NumberFormatException ex){
            String exx;
            exx = ex.getMessage();
            //ex.printStackTrace();
            JOptionPane.showMessageDialog(this, "Quantidade inválida!"  +"\n \n \n" + exx);
        }
        return false; 
        
    }
     
     private void calcularTotal(){
        if(ftfMO.getText() != null){
         /*mo = Double.parseDouble(String.valueOf(ftfMO.getValue()));
         
         vlrvenda = vlrcusto + mo;
         ftfVlrVenda.setValue(vlrvenda);
         basecalculo = altura*comprimento;
         vlrmetro = vlrvenda/basecalculo;*/
         
         
         
         
         
          vlrcusto = 0.00;
        //ProdutosdetControl odc = new ProdutosdetControl();
        Double preco;
        Float qtd;
        Double semitotal ;
        for (int i = 0; i < produtosdet.size(); i++){
                produtosdet.get(i).getIDProduto(); 
                produtosdet.get(i).getIDMaterial();
                qtd = produtosdet.get(i).getQtdMaterial();
                preco = produtosdet.get(i).getVlrCusto();
                semitotal = preco * qtd;
                vlrcusto = vlrcusto + semitotal;
                }
        ConvertDouble cvd = new ConvertDouble();
        String mo1;
        mo =Double.parseDouble(String.valueOf(ftfMO.getValue()));
        //mo = cvd.converterDoubleString2(mo1);
        
        String vlrcusto1;
        vlrcusto1 = String.valueOf(vlrcusto);
        //vlrcusto = cvd.converterDoubleString2(vlrcusto1);
        vlrvenda = vlrcusto + mo;
        String total1;
        total1 = String.valueOf(vlrvenda);
        //vlrvenda = cvd.converterDoubleString2(total1);
        
        
        /*mo = Double.parseDouble(ftfMO.getText().trim());
        servicoterceiro = Double.parseDouble(ftfServicoTerceiros.getText().trim());
        desconto = Double.parseDouble(ftfDesconto.getText().trim());*/
        
        
        //total = (subtotal - desconto) + servicoterceiro + mo;
        
        //String vpago;
        //vpago = ftfValorPago.getText();
        //valorpago = cvd.converterDoubleString2(vpago);
       // String resta1;
        //resta1 = String.valueOf(total - valorpago);
        //resta = cvd.converterDoubleString2(resta1);
        //ftfResta.setValue(resta);
        
        
        //ftfTotal.setText(String.valueOf(total));
        ftfVlrVenda.setValue(vlrvenda);
        ftfVlrCusto.setValue(vlrcusto);
         
         
        }else{
            JOptionPane.showMessageDialog(this, "Insira o valor da Mão de Obra!");
        }
         
     }
     
     
     
     
     private void alterarProdutoAlter(){
        ProdutosBean produto =new ProdutosBean();
        ProdutosControl pc = new ProdutosControl();
        ConvertDouble cvd = new ConvertDouble();
         produto.setCodProduto(tfCodigo.getText());
            produto.setDescricao(tfDescricao.getText());
         String altura1;
            altura1 = ftfAltura.getText();
            altura = cvd.converterFloat(altura1);
            produto.setAltura(altura);
            produto.setComprimento(Float.parseFloat(String.valueOf(ftfComprimento.getValue())));
            produto.setMo(mo);
            produto.setVlrCusto(vlrcusto);
            produto.setVlrVenda(vlrvenda);
            produto.setVlrMetro(vlrmetro);
            pc.alterarProduto(produto);
            
            
            
            
           String cp;
            ProdutosdetBean pdb = new ProdutosdetBean();
            //ProdutosControl pc = new ProdutosControl();
            ProdutosdetControl pdc = new ProdutosdetControl();
            for(int i=0; i<produtosdet.size(); i++){
                cp = produtosdet.get(i).getIDProduto();
                pdb.setIDProduto(produtosdet.get(i).getIDProduto());
                pdb.setIDMaterial(produtosdet.get(i).getIDMaterial());
                pdb.setQtdMaterial(produtosdet.get(i).getQtdMaterial());
                pdb.setBaseQtd(produtosdet.get(i).getBaseQtd());
                pc.excluirProdutodet(cp);
            }
            for(int i=0; i<produtosdet.size(); i++){
                pdb.setIDProduto(produtosdet.get(i).getIDProduto());
                pdb.setIDMaterial(produtosdet.get(i).getIDMaterial());
                pdb.setQtdMaterial(produtosdet.get(i).getQtdMaterial());
                pdb.setBaseQtd(produtosdet.get(i).getBaseQtd());
                pdc.cadastrarItem(pdb);
            }
            JOptionPane.showMessageDialog(this, "Produto Alterado com Sucesso!");
        
    }
     
     
     private void removerProduto(){
        if (tbMateriais.getSelectedRow() != -1){               //exclui produto selecionado
            int resposta = JOptionPane.showConfirmDialog(this, "Tem certeza que quer excluir o material selecionado?", "Confirmação",
                    JOptionPane.YES_NO_OPTION);
            if (resposta == JOptionPane.YES_OPTION){
                tbMateriais.getSelectedRow();
                //itensOs.remove(tbOS.getSelectedRow());
                produtosdet.remove(tbMateriais.getSelectedRow());
                if(mater.size()!= 0){
                mater.remove(tbMateriais.getSelectedRow());
                }
                tmMateriais.removeRow(tbMateriais.getSelectedRow());
                
                
                btExcluir.setEnabled(false);
            tfQTD.setValue(null);
        
    }
    }
    }
     
     
    private void incluirMaterial(){
        codprod = tfCodigo.getText();
        
        
        
            //produto.setCodProduto(tfProduto.getText());
            //codprod = produto.getCodProduto();
           busca = tfMaterial.getText();
               ProdutosdetControl pdc = new ProdutosdetControl();
            buscamaterial(busca);
            //Float calc;
            
            altura = Float.parseFloat(String.valueOf(ftfAltura.getValue()));
            comprimento = Float.parseFloat(String.valueOf(ftfComprimento.getValue()));
            baseqtd = Float.parseFloat(String.valueOf(tfQTD.getValue()));
            //basecalculo = altura * comprimento;
         //basecalculo = basecalculo * baseqtd;
            
            
            try {
            if (codmat == null) {
                JOptionPane.showMessageDialog(this, "Produto não cadastrado!");
                
            }else {if (verificarQuantidade()&& verificarQuantidadeEstoque() && verificarDuplicidade()){
            ProdutosdetBean vb = new ProdutosdetBean();
            vb.setIDProduto(codprod);
            vb.setIDMaterial(codmat);
            vb.setQtdMaterial(baseqtd);
            vb.setBaseQtd(baseqtd);
            
            //buscaprod(busca);              //¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
            //oc.listarProdutos(codprod);   *********************************
            materiais = ProdutosdetControl.materiais1;
            MateriaisBean material = new MateriaisBean();
            for (int i =0; i < materiais.size(); i++){
           material.setCodMaterial(materiais.get(i).getCodMaterial());
           material.setDescricao(materiais.get(i).getDescricao());
           vb.setDescricao(materiais.get(i).getDescricao());
           material.setVlrCusto(materiais.get(i).getVlrCusto());
           vb.setVlrCusto(materiais.get(i).getVlrCusto());
           //material.setQtdEstoque(materiais.get(i).getQtdEstoque());
           
       }
            
            
            material.setQtdEstoque(baseqtd);
            
            produtosdet.add(vb);
            mater.add(material);
            
            String unit;
            String Descricao;
            String quantidade;
            String valor;
            String codmat1;
            
            
            unit = String.valueOf(material.getVlrCusto());
            Descricao = material.getDescricao();
            quantidade = String.valueOf(baseqtd);
            codmat1 = String.valueOf(codmat);
            valor = String.valueOf(material.getVlrCusto()* Float.parseFloat(quantidade));
            String [] campos = new String [] { codmat1, Descricao, unit, quantidade, valor};
            tmMateriais.addRow(campos);
            
            Double vlr;
            //vlr = material.getVlrCusto()* Double.parseDouble(String.valueOf(calc));
            Double calcul;
            calcul = Double.parseDouble(String.valueOf(baseqtd));
            vlr = material.getVlrCusto()*calcul;
            
            vlrcusto = vlrcusto+ vlr;
            ftfVlrCusto.setValue(vlrcusto);
            
            
            
        }
        
        
        else {
       //     tfQTD.requestFocus();
        }
        
            }
        } catch(Exception ex){
            //JOptionPane.showMessageDialog(this,ex.getMessage());
           // JOptionPane.showMessageDialog(this, "Digite corretamente o CÓDIGO ou DESCRIÇÃO do Produto", "ERRO", JOptionPane.ERROR_MESSAGE);  
                //tfMaterial.requestFocus();
        }
        
        
            
            while (pdc.materiais1.size()>0){
            pdc.materiais1.remove(0);
            
            }
            while (materiais.size()>0){
            materiais.remove(0);
            
            }
        
    }
    
    
    
     private void fechar(){
        tfCodigo.setText("");
        tbProdutos.removeAll();
        if(produtos != null){
while (produtos.size()>0){
            produtos.remove(0);           
        }
        }
        while (produtosdet.size()>0){
            produtosdet.remove(0); 
        }
        while (mater.size()>0){
            mater.remove(0); 
        }
        
while (tmProdutos.getRowCount()>0){
            tmProdutos.removeRow(0);            
        }
while (tmMateriais.getRowCount()>0){
            tmMateriais.removeRow(0);            
        }
    }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        DMateriais = new javax.swing.JDialog();
        jScrollPane3 = new javax.swing.JScrollPane();
        tbDmateriais = new javax.swing.JTable();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        tfDescricao = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        lblforn = new javax.swing.JLabel();
        ftfVlrVenda = new JFormattedTextField(DecimalFormat.getInstance());
        ftfVlrCusto = new JFormattedTextField(DecimalFormat.getInstance());
        tfCodigo = new javax.swing.JTextField();
        lblc = new javax.swing.JLabel();
        btNovo = new javax.swing.JButton();
        btSalvar = new javax.swing.JButton();
        btCancelar = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tbMateriais = new javax.swing.JTable();
        jLabel2 = new javax.swing.JLabel();
        ftfMO = new JFormattedTextField(DecimalFormat.getInstance());
        panel = new javax.swing.JPanel();
        tfMaterial = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        btInserir = new javax.swing.JButton();
        jLabel9 = new javax.swing.JLabel();
        lblInfo = new javax.swing.JLabel();
        tfQTD = new JFormattedTextField(DecimalFormat.getInstance());
        btRetirar = new javax.swing.JButton();
        ftfAltura = new JFormattedTextField(DecimalFormat.getInstance());
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        ftfComprimento = new JFormattedTextField(DecimalFormat.getInstance());
        btCalcular = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        tfPesquisaProduto = new javax.swing.JTextField();
        btPesquisar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbProdutos = new javax.swing.JTable();
        btExcluir = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        lblCodigo = new javax.swing.JLabel();
        lblDescricao = new javax.swing.JLabel();
        lblAltura = new javax.swing.JLabel();
        lblComprimento = new javax.swing.JLabel();
        lblVlrCusto = new javax.swing.JLabel();
        lblMo = new javax.swing.JLabel();
        lblVlrVenda = new javax.swing.JLabel();

        DMateriais.setMinimumSize(new java.awt.Dimension(703, 300));
        DMateriais.setType(java.awt.Window.Type.POPUP);

        tbDmateriais.setModel(tmDmateriais);
        tbDmateriais.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmDmateriais = tbDmateriais.getSelectionModel();
        lsmDmateriais.addListSelectionListener(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent e){
                if(! e.getValueIsAdjusting()){
                    tbDmateriaisLinhaSelecionada(tbDmateriais);
                }
            }
        });
        jScrollPane3.setViewportView(tbDmateriais);

        javax.swing.GroupLayout DMateriaisLayout = new javax.swing.GroupLayout(DMateriais.getContentPane());
        DMateriais.getContentPane().setLayout(DMateriaisLayout);
        DMateriaisLayout.setHorizontalGroup(
            DMateriaisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 703, Short.MAX_VALUE)
        );
        DMateriaisLayout.setVerticalGroup(
            DMateriaisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("CADASTRO DE PRODUTOS");
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                Sair(evt);
            }
        });

        jLabel1.setText("Descrição");

        tfDescricao.setEnabled(false);

        jLabel3.setText("Valor de Custo");

        jLabel4.setText("Valor de Venda");

        lblforn.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblforn.setToolTipText("");

        ftfVlrVenda.setEnabled(false);

        ftfVlrCusto.setEnabled(false);

        tfCodigo.setEnabled(false);

        lblc.setText("Código");

        btNovo.setText("Novo");
        btNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btNovoActionPerformed(evt);
            }
        });

        btSalvar.setText("Salvar");
        btSalvar.setEnabled(false);
        btSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSalvarActionPerformed(evt);
            }
        });

        btCancelar.setText("Cancelar");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        tbMateriais.setModel(tmMateriais);
        tbMateriais.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmMateriais = tbMateriais.getSelectionModel();
        lsmMateriais.addListSelectionListener(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent e){
                if(! e.getValueIsAdjusting()){
                    tbMateriaisLinhaSelecionada(tbMateriais);
                }
            }
        });
        jScrollPane2.setViewportView(tbMateriais);

        jLabel2.setText("Mão de Obra");

        ftfMO.setEnabled(false);

        panel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Inclusão de Materiais", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.TOP, null, new java.awt.Color(0, 0, 0)));

        tfMaterial.setEnabled(false);
        tfMaterial.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                click(evt);
            }
        });

        jLabel5.setText("Peso total");

        btInserir.setText("Inserir");
        btInserir.setEnabled(false);
        btInserir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btInserirActionPerformed(evt);
            }
        });

        jLabel9.setText("Material");

        lblInfo.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblInfo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblInfo.setText("?");

        tfQTD.setEnabled(false);

        btRetirar.setText("Retirar");
        btRetirar.setEnabled(false);
        btRetirar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRetirarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
        panel.setLayout(panelLayout);
        panelLayout.setHorizontalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel9)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE)
                .addComponent(tfMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, 460, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(tfQTD, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btInserir)
                .addGap(18, 18, 18)
                .addComponent(btRetirar, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        panelLayout.setVerticalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btInserir)
                        .addComponent(lblInfo)
                        .addComponent(btRetirar))
                    .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(tfQTD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(tfMaterial, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.LEADING)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        ftfAltura.setEnabled(false);

        jLabel7.setText("Altura");

        jLabel8.setText("Comprimento");

        ftfComprimento.setEnabled(false);

        btCalcular.setText("CALCULAR");
        btCalcular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCalcularActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 891, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(lblc, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(tfCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(jLabel1)
                                        .addGap(18, 18, 18)
                                        .addComponent(tfDescricao, javax.swing.GroupLayout.PREFERRED_SIZE, 399, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addGap(18, 18, 18)
                                        .addComponent(jLabel7)
                                        .addGap(18, 18, 18)
                                        .addComponent(ftfAltura, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel8)
                                        .addGap(18, 18, 18)
                                        .addComponent(ftfComprimento, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addGap(227, 227, 227)
                                        .addComponent(lblforn, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE))))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addGap(10, 10, 10)
                                .addComponent(ftfVlrCusto, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(98, 98, 98)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(jLabel2)
                                        .addGap(18, 18, 18)
                                        .addComponent(ftfMO, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(jLabel4))
                                    .addComponent(btCancelar))
                                .addGap(18, 18, 18)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(ftfVlrVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(btCalcular, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(btNovo)
                                .addGap(113, 113, 113)
                                .addComponent(btSalvar)))))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(11, 11, 11)
                        .addComponent(lblforn, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(tfCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblc)))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(tfDescricao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel7)
                        .addComponent(ftfAltura, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel8)
                        .addComponent(ftfComprimento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jLabel1)))
                .addGap(7, 7, 7)
                .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(ftfVlrCusto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ftfMO, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ftfVlrVenda, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel3)
                            .addComponent(jLabel2)
                            .addComponent(jLabel4))))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btNovo)
                    .addComponent(btCalcular, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btSalvar)
                        .addComponent(btCancelar)))
                .addContainerGap())
        );

        jTabbedPane1.addTab("Cadastrar", jPanel1);

        btPesquisar.setText("Pesquisar");
        btPesquisar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPesquisarActionPerformed(evt);
            }
        });

        tbProdutos.setModel(tmProdutos);
        tbProdutos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmProdutos = tbProdutos.getSelectionModel();
        lsmProdutos.addListSelectionListener(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent e){
                if(! e.getValueIsAdjusting()){
                    tbProdutosLinhaSelecionada(tbProdutos);
                }
            }
        });
        jScrollPane1.setViewportView(tbProdutos);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(tfPesquisaProduto, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addComponent(btPesquisar)))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btPesquisar, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(tfPesquisaProduto, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE)
                .addContainerGap())
        );

        btExcluir.setText("Excluir");
        btExcluir.setEnabled(false);
        btExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExcluirActionPerformed(evt);
            }
        });

        btAlterar.setText("Alterar");
        btAlterar.setEnabled(false);
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        lblCodigo.setBorder(javax.swing.BorderFactory.createTitledBorder("Codigo"));

        lblDescricao.setBorder(javax.swing.BorderFactory.createTitledBorder("Descrição"));

        lblAltura.setBorder(javax.swing.BorderFactory.createTitledBorder("Altura"));

        lblComprimento.setBorder(javax.swing.BorderFactory.createTitledBorder("Comprimento"));

        lblVlrCusto.setBorder(javax.swing.BorderFactory.createTitledBorder("Valor de Custo"));

        lblMo.setBorder(javax.swing.BorderFactory.createTitledBorder("Mão de Obra"));

        lblVlrVenda.setBorder(javax.swing.BorderFactory.createTitledBorder("Valor de Venda"));

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanel3Layout.createSequentialGroup()
                        .addComponent(lblDescricao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lblAltura, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lblComprimento, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel3Layout.createSequentialGroup()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel3Layout.createSequentialGroup()
                                .addComponent(btAlterar)
                                .addGap(18, 18, 18)
                                .addComponent(btExcluir))
                            .addComponent(lblCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel3Layout.createSequentialGroup()
                                .addComponent(lblVlrCusto, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lblMo, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lblVlrVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lblComprimento, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
                    .addComponent(lblAltura, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblDescricao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lblVlrVenda, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(lblMo, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(lblVlrCusto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btAlterar)
                    .addComponent(btExcluir))
                .addGap(18, 18, 18)
                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblAltura, lblCodigo, lblComprimento, lblDescricao, lblMo, lblVlrCusto, lblVlrVenda});

        jTabbedPane1.addTab("Consultar", jPanel3);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void btNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btNovoActionPerformed
        habilitarCampos();
        tipoCadastro = "novo";
        tipoalter = "alteraçãoinicial";
        btSalvar.setEnabled(true);
        tfCodigo.requestFocus();
        novoProduto();
    }//GEN-LAST:event_btNovoActionPerformed

    private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSalvarActionPerformed
        if (tipoCadastro.equals("novo")){
            cadastraProduto();
            desabilitarCampos();
            desabilitarbotoes();
            
        }else if (tipoCadastro.equals("alteracao")&& tipoalter.equals("alteraçãoinicial")){
            //tbProdutos.getSelectionModel().clearSelection();
            
            alterarProduto();
            desabilitarbotoes();
        }else if(tipoCadastro.equals("alteracao")&&tipoalter.equals("alteraçãoposterior")){
            alterarProdutoAlter();
             desabilitarbotoes();
        }
    }//GEN-LAST:event_btSalvarActionPerformed

    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAlterarActionPerformed
        btInserir.setEnabled(true);
        tipoalter = "alteraçãoposterior";
        tipoCadastro = "alteracao";
        btSalvar.setEnabled(true);
        habilitarCampos();
        setarCampos();
        
    }//GEN-LAST:event_btAlterarActionPerformed

    private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExcluirActionPerformed
        excluirProduto();
    }//GEN-LAST:event_btExcluirActionPerformed

    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
        cancelarCadastro();
        desabilitarCampos();
        desabilitarbotoes();
        dispose();
    }//GEN-LAST:event_btCancelarActionPerformed

    private void btPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPesquisarActionPerformed
        listarProdutos();
    }//GEN-LAST:event_btPesquisarActionPerformed

    private void Sair(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_Sair
         tbProdutos.getSelectionModel().clearSelection();
        fechar();
    }//GEN-LAST:event_Sair

    private void click(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_click
        
        DMateriais.setVisible(true);
        tfQTD.requestFocus();
    }//GEN-LAST:event_click

    private void btInserirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btInserirActionPerformed
       
        
        incluirMaterial();
        
        
    }//GEN-LAST:event_btInserirActionPerformed

    private void btCalcularActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCalcularActionPerformed
        calcularTotal();
    }//GEN-LAST:event_btCalcularActionPerformed

    private void btRetirarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRetirarActionPerformed
        removerProduto();
    }//GEN-LAST:event_btRetirarActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Produtos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Produtos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Produtos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Produtos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    new Produtos().setVisible(true);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(Produtos.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InstantiationException ex) {
                    Logger.getLogger(Produtos.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(Produtos.class.getName()).log(Level.SEVERE, null, ex);
                } catch (UnsupportedLookAndFeelException ex) {
                    Logger.getLogger(Produtos.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JDialog DMateriais;
    private javax.swing.JButton btAlterar;
    private javax.swing.JButton btCalcular;
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btExcluir;
    private javax.swing.JButton btInserir;
    private javax.swing.JButton btNovo;
    private javax.swing.JButton btPesquisar;
    private javax.swing.JButton btRetirar;
    private javax.swing.JButton btSalvar;
    private javax.swing.JFormattedTextField ftfAltura;
    private javax.swing.JFormattedTextField ftfComprimento;
    private javax.swing.JFormattedTextField ftfMO;
    private javax.swing.JFormattedTextField ftfVlrCusto;
    private javax.swing.JFormattedTextField ftfVlrVenda;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel lblAltura;
    private javax.swing.JLabel lblCodigo;
    private javax.swing.JLabel lblComprimento;
    private javax.swing.JLabel lblDescricao;
    private javax.swing.JLabel lblInfo;
    private javax.swing.JLabel lblMo;
    private javax.swing.JLabel lblVlrCusto;
    private javax.swing.JLabel lblVlrVenda;
    private javax.swing.JLabel lblc;
    private javax.swing.JLabel lblforn;
    private javax.swing.JPanel panel;
    private javax.swing.JTable tbDmateriais;
    private javax.swing.JTable tbMateriais;
    private javax.swing.JTable tbProdutos;
    private javax.swing.JTextField tfCodigo;
    private javax.swing.JTextField tfDescricao;
    private javax.swing.JTextField tfMaterial;
    private javax.swing.JTextField tfPesquisaProduto;
    private javax.swing.JFormattedTextField tfQTD;
    // End of variables declaration//GEN-END:variables
}
